home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor2
/
goto.doc
< prev
next >
Wrap
Text File
|
1995-03-31
|
1KB
|
36 lines
úÄÄÄÄÄÄ¿
3 GOTO 3 by Joseph K. Horn, permanently brain damaged by BASIC.
àÄÄÄÄÄÄù
So you want to jump into the middle of a System RPL routine, but the
Laws of RPL told you that it's impossible? It can be done!
System RPL has a GOTO in it! HP's documentation didn't explain how it
works, but it's simple:
GOTO (foo), where (foo) is a five-nibble address (NOT a system
binary!) jumps immediately to address (foo), where RPL continues.
This allows us to jump smack into the middle of any operating system
RPL program! However, (foo) must NOT be a program prolog. There are
supported means for jumping to supported objects. GOTO is intended
ONLY for jumping into the *middle* of objects.
Don't worry; it can't result in spaghetti code, because it only works
on fixed addresses, so you can't use it to jump around within the
running program itself.
There are also two conditional versions: ?GOTO jumps if TRUE is on
level one; NOT?GOTO jumps if FALSE is on the stack. Both remove the
flag before jumping. Neither returns; it's not a GOSUB. These occur
in the HP 48 operating system more than 200 times, so don't worry that
it isn't the way HP would write software...
The magic addresses:
619CB GOTO jump to subsequent 5-nibble absolute address
619E0 ?GOTO if TRUE then DROP GOTO else DROP
619F3 NOT?GOTO if FALSE then DROP GOTO else DROP
-jkh- EQU akcs.joehorn@hpcvbbs.cv.hp.com